46 research outputs found

    Monitoring Java Programs with Java PathExplorer

    Get PDF
    AbstractWe present recent work on the development of Java PathExplorer (JPaX), a tool for monitoring the execution of Java programs. JPaX can be used during program testing to gain increased information about program executions, and can potentially furthermore be applied during operation to survey safety critical systems. The tool facilitates automated instrumentation of a program's byte code, which will then emit events to an observer during its execution. The observer checks the events against user provided high level requirement specifications, for example temporal logic formulae, and against lower level error detection procedures, usually concurrency related such as deadlock and data race algorithms. High level requirement specifications together with their underlying logics are defined in rewriting logic using Maude, and then can either be directly checked using Maude rewriting engine, or be first translated to efficient data structures and then checked in Java

    Introduction to the Special Issue on Runtime Verification

    Get PDF

    A general approach to define binders using matching logic

    Get PDF
    We propose a novel shallow embedding of binders using matching logic, where the binding behavior of object-level binders is obtained for free from the behavior of the built-in existential binder of matching logic. We show that binders in various logical systems such as lambda-calculus, System F, pi-calculus, pure type systems, etc., can be defined in matching logic. We show the correctness of our definitions by proving conservative extension theorems, which state that a sequent/judgment is provable in the original system if and only if it is provable in matching logic. An appealing aspect of our embedding of binders in matching logic is that it yields models to all binders, also for free. We show that models yielded by matching logic are deductively complete to the formal reasoning in the original systems. For lambda-calculus, we further show that the yielded models are representationally complete---a desired property that is not enjoyed by many existing lambda-calculus semantics.Ope

    Behavioral Rewrite Systems and Behavioral Productivity

    Get PDF
    Abstract. This paper introduces behavioral rewrite systems, where rewriting is used to evaluate experiments, and behavioral productivity, which says that each experiment can be fully evaluated, and investigates some of their properties. First, it is shown that, in the case of (infinite) streams, behavioral productivity generalizes and may bring to a more basic rewriting setting the existing notion of stream productivity defined in the context of infinite rewriting and lazy strategies; some arguments are given that in some cases one may prefer the behavioral approach. Second, a behavioral productivity criterion is given, which reduces the problem to conventional term rewrite system termination, so that one can use off-the-shelf termination tools and techniques for checking behavioral productivity in general, not only for streams. Finally, behavioral productivity is shown to be equivalent to a proof-theoretic (rather than model-theoretic) notion of behavioral well-specifiedness, and its difficulty in the arithmetic hierarchy is shown to be Π 0 2 -complete. All new concepts are exemplified over streams, infinite binary trees, and processes

    Preface

    Get PDF

    Improved multithreaded unit testing.

    Get PDF
    ABSTRACT Multithreaded code is notoriously hard to develop and test. A multithreaded test exercises the code under test with two or more threads. Each test execution follows some schedule/interleaving of the multiple threads, and different schedules can give different results. Developers often want to enforce a particular schedule for test execution, and to do so, they use time delays (Thread.sleep in Java). Unfortunately, this approach can produce false positives or negatives, and can result in unnecessarily long testing time. This paper presents IMUnit, a novel approach to specifying and executing schedules for multithreaded tests. We introduce a new language that allows explicit specification of schedules as orderings on events encountered during test execution. We present a tool that automatically instruments the code to control test execution to follow the specified schedule, and a tool that helps developers migrate their legacy, sleep-based tests into event-based tests in IMUnit. The migration tool uses novel techniques for inferring events and schedules from the executions of sleep-based tests. We describe our experience in migrating over 200 tests. The inference techniques have high precision and recall of over 75%, and IMUnit reduces testing time compared to sleepbased tests on average 3.39x

    A semantic approach to interpolation

    Get PDF
    Craig interpolation is investigated for various types of formulae. By shifting the focus from syntactic to semantic interpolation, we generate, prove and classify a series of interpolation results for first-order logic. A few of these results non-trivially generalize known interpolation results; all the others are new. We also discuss someapplications of our results to the theory of institutions and of algebraic specifications,and a Craig-Robinson version of these results
    corecore